Computerized systems provide many advantageous towards peoples' ability to perform tasks. Indeed, the computer system's ability to process information has transformed the way we live and work. Computer systems now commonly perform a host of tasks (e.g., word processing, scheduling, database management, etc.) that prior to the advent of computer systems were performed manually. More recently, computing systems have been coupled together to form computer networks over which the computer systems can communicate electronically to share data. As a result, many tasks performed at a computer system (e.g., accessing electronic mail, web browsing, downloading multimedia content, etc.) include electronic communication with one or more other systems via a computer network (e.g., the Internet).
Often, electronic communication on a computer network includes a client computer system (herein referred to as a “client” or “computing device”) requesting access to a service (e.g., electronic mail, web service accounts, update accounts, etc.) at a server computing system (herein referred to as “server” or “service”). For example, nowadays there are millions of personal computers (PCs) connected to the Internet for communication with various servers. Many of these clients acquire new or updated software by requesting such downloads from a remote server over the Internet.
Conventional methods of downloading/uploading data such as new and updated software to a PC over a remote network (e.g., Internet) interfere with the PCs user's ability to access content over the remote network (e.g., browsing the Internet). With increased processing speeds, it is the bandwidth to the remote network which is a significant bottleneck to the user's browsing or data retrieval experience. For example, typical download/upload transfers will saturate the slowest point in the network between the client system and server. If the slow network node is an internet gateway device (IGD) then all other traffic, both from this machine and any others sharing the IGD, are impacted by severely limiting their network utilization. Moreover, if the download/upload is interrupted for some reason (e.g., the remote network connection is lost), it may be necessary to restart the transfer from the beginning of the file, thus wasting significant network resources. Although other conventional downloading/uploading software permits the user to schedule the transmissions for a designated time, such scheduling will still limit the user's ability to engage in other network activity for those time periods.
Even though the transferring of data such as software limits a user's ability to access other data on the remote network, such download/uploading of software and other content is crucial in today's ever growing popularity of computer systems. For example, providing software updates is beneficial to PC users because it corrects problems and improves the performance of their PCs. Additionally, the software vendor benefits from a reduction in the number of product support calls, which in turn reduces the substantial resources the vendor might otherwise allocate to handle such calls.
Due to the high demand for downloading/uploading of data over remote network links, attempts have been made to mitigate interference with other remote network activity when transferring data such as software updates. For example, recently systems have been configured to determine when a relatively low level of remote network bandwidth is utilized, sometimes referred to as “remote network idle periods.” Such systems monitor a level of estimated bandwidth consumption by using local network interfaces (e.g., network cards) to calculate a threshold level of utilization. Below this calculated threshold, the transfer of data between the client and server is not likely to interfere with other remote network activity. Accordingly, when a level of usage drops below such threshold value, a client may periodically connect to a server and download small portions of software or updates. This process may be continued until all portions of a software program, available updates, or other data are transferred to the appropriate device. In other words, the downloading/uploading of lower priority data may be transferred over the remote network link in a “background” process during remote network idle periods.
Although such background data transfer systems have made some significant advancement to eliminate interference with other network activity, there are still several shortcomings to these models. For example, as previously mentioned, the throttling techniques implemented by background transfer systems utilize network traffic measurements obtained from the local network interface (e.g., network card) to control and estimate the effective available bandwidth. While this approach is reasonable for many network topologies, for some configurations the information that can be retrieved by using this technique is not sufficient to allow background transfer systems to throttle accurately.
An example of such problematic network topologies is the typical home network, where computers on the local network are interconnected using a reasonably fast network link (e.g., a 100 Mbps network hubs and cards), but the device providing the Internet connectivity (e.g., Digital Subscriber Line (DSL) modems) runs at a much slower speed. In such case, the DSL box executes the role of a “gateway device” and it is in fact the segment of the network that imposes a cap for the maximum speed that can be reached by data transfers between the local network and an external or remote network (e.g., the Internet). Accordingly, when measurements for the network traffic are made at the local network interface level, the “bottleneck” represented by the reduced speed of the gateway device cannot be detected. Furthermore, the aggregate bandwidth consumption at the gateway device by systems connected to the local network cannot be measured from each system's network interfaces in isolation.